ADO a rychlost predavani parametru do SP
Otázka od: Karel Kral
12. 11. 2002 18:17
Ahoj,
exportuji data z nasi databaze do MSSQL 2000 pres ADO. Mam ale velke
problemy s vykonem. Nemate s tim nekdo zkusenosti? (D7 Pro, ADOExpress,
Celeron 1.4 GHZ)
Data exportuji tak, ze pro pridani zaznamu mam vytvorenou SP ktere
predavam jednotlive pole databaze jako parametry.
Data exportuju takto:
1. Mam vytvoreny TADOCommand, ktery ma nastavene spojeni a jmeno ulozene
procedury. Je nastaveno [eoExecuteNoRecords]
2. Zavolam Command.Params.Refresh, tim natahnu seznam parametru ze SP
(je jich asi 100)
3. Na kazdy parametr si udelam vazbu (ulozim si ukazatel na objekt),
abych ho nemusel hledat pokazde podle jmena
4. Pro kazdy zaznam nacpu do vsech parametru hodnoty Parameter.Value :=
'Ma hodnota' z mych databazovych poli
5. Pro kazdy zaznam zavolam ulozenou proceduru s temito parametry
Ted vykon:
* Pokud zakomentuji body 4. a 5., tedy ctu pouze z nasi databaze
dostavam zhruba 550 zaznamu/sec
* Pokud zakomentuji volani SP (tedy do databaze se nic neuklada, pouze
se plni parametry), jsem uz na ubohych 200 zaznamu/sec! Vypada to, ze
pouze prirazovani do Parameter.Value a s tim spojena rezie sezere
polovinu vykonu. Ctenim z poli naseho zaznamu to neni, kdyz ctu
"naprazdno" bez prirazeni do Parameter.Value, jsem opet na 540
zaznamech/sec
* Pokud volam i SP, jsem na 110 zaznamech/sec.
Delam neco spatne nebo proste z ADO Express nic lepsiho nedostanu? Je to
holt COM nebo jsou tak podelane varianty Delphi? Nevite nekdo o nejakem
lepsim zpusobu?
--
______________________________________________________
Karel Kral, vedouci odd. IT / IT dep. manager
Purus, s.r.o., Cezavy 627, 664 56 Blucina, CZ
Tel: 547 235 000, 602 552 432, Fax: 547 231 203
E-Mail: mailto:kral@purus.cz, WWW: http://www.purus.cz
______________________________________________________